package Offer.offer2016;

import domain.TreeNode;

//�ж��Ƿ���ƽ�������
//��Ч�ʵݹ�
public class Test39a 
{

	public static void main(String[] args) 
	{
		TreeNode node1=new TreeNode(1);
		TreeNode node2=new TreeNode(2);
		TreeNode node3=new TreeNode(3);
		TreeNode node4=new TreeNode(4);
		TreeNode node5=new TreeNode(5);
		TreeNode node6=new TreeNode(6);
		TreeNode node7=new TreeNode(7);
		node1.left=node2;
		node1.right=node3;
		node2.left=node4;
		node2.right=node5;
		node3.left=node6;
		node3.right=node7;
		node4.left=node4.right=null;
		node5.left=node4.right=null;
		node6.left=node4.right=null;
		node7.left=node4.right=null;
        System.out.println(isBalanced(node1));
	}
	public static boolean isBalanced(TreeNode root)
	{
		if(root==null)
			return true;
		int left=BinaryTreeDepth(root.left);
		int right=BinaryTreeDepth(root.right);
		if(left-right>1||left-right<-1)
			return false;
		return isBalanced(root.left)&&isBalanced(root.right);
	}	
	public static int BinaryTreeDepth(TreeNode root)
	{
		if(root==null)
			return 0;
		int left=BinaryTreeDepth(root.left);
		int right=BinaryTreeDepth(root.right);
		return (left>right)?(left+1):(right+1);
	}

}
